package visitor;

import syntaxtree.AbstractNode;
import syntaxtree.And;
import syntaxtree.ArrayAssign;
import syntaxtree.ArrayLength;
import syntaxtree.ArrayLookup;
import syntaxtree.Assign;
import syntaxtree.Block;
import syntaxtree.BooleanType;
import syntaxtree.Call;
import syntaxtree.ClassDeclExtends;
import syntaxtree.ClassDeclSimple;
import syntaxtree.False;
import syntaxtree.Formal;
import syntaxtree.Identifier;
import syntaxtree.IdentifierExp;
import syntaxtree.IdentifierType;
import syntaxtree.If;
import syntaxtree.IntArrayType;
import syntaxtree.IntegerLiteral;
import syntaxtree.IntegerType;
import syntaxtree.LessThan;
import syntaxtree.MainClass;
import syntaxtree.MethodDecl;
import syntaxtree.Minus;
import syntaxtree.NewArray;
import syntaxtree.NewObject;
import syntaxtree.Not;
import syntaxtree.Plus;
import syntaxtree.Print;
import syntaxtree.Program;
import syntaxtree.This;
import syntaxtree.Times;
import syntaxtree.True;
import syntaxtree.Type;
import syntaxtree.VarDecl;
import syntaxtree.While;

public interface TypeVisitor {

	public Type visit(AbstractNode n);

	public Type visit(Program n);

	public Type visit(MainClass n);

	public Type visit(ClassDeclSimple n);

	public Type visit(ClassDeclExtends n);

	public Type visit(VarDecl n);

	public Type visit(MethodDecl n);

	public Type visit(Formal n);

	public Type visit(IntArrayType n);

	public Type visit(BooleanType n);

	public Type visit(IntegerType n);

	public Type visit(IdentifierType n);

	public Type visit(Block n);

	public Type visit(If n);

	public Type visit(While n);

	public Type visit(Print n);

	public Type visit(Assign n);

	public Type visit(ArrayAssign n);

	public Type visit(And n);

	public Type visit(LessThan n);

	public Type visit(Plus n);

	public Type visit(Minus n);

	public Type visit(Times n);

	public Type visit(ArrayLookup n);

	public Type visit(ArrayLength n);

	public Type visit(Call n);

	public Type visit(IntegerLiteral n);

	public Type visit(True n);

	public Type visit(False n);

	public Type visit(IdentifierExp n);

	public Type visit(This n);

	public Type visit(NewArray n);

	public Type visit(NewObject n);

	public Type visit(Not n);

	public Type visit(Identifier n);
}
